using Microsoft.Xna.Framework;

namespace FishFillets.Model.GameItems
{
    /// <summary>
    /// Base object for all game items.
    /// </summary>
    public abstract class BaseItem
    {
        /// <summary>
        /// Asset name is stored here
        /// </summary>
        public string AssetName { get; set; }

        /// <summary>
        /// Poisiton on the game plan.
        /// </summary>
        public Point Position { get; set; }

        /// <summary>
        /// Map of the item.
        /// </summary>
        public bool[,] ItemMap { get; set; }

        /// <summary>
        /// Item Weight, used for collision calculations. Player is considered as Fixed.
        /// </summary>
        public ItemWeight Weight { get; set; }

        /// <summary>
        /// Flag if this item or fish is already out of the room?
        /// </summary>
        public bool Out { get; set; }

        /// <summary>
        /// Flag if this item or fish is on the edge of the game screen.
        /// </summary>
        public bool OnTheEdge { get; set; }

        /// <summary>
        /// Flag if this item or fish is dead or alive?
        /// </summary>
        public bool Alive { get; set; }

        /// <summary>
        /// Flag if this item or fish is talking or not?
        /// </summary>
        public bool Talking { get; set; }

        /// <summary>
        /// Item direction - where is it rotated. 
        /// It is actually needed in items too.
        /// </summary>
        public FishDirection Direction { get; set; }

        #region ----- virtual properties ---------------------------------

        public int X
        {
            get { return Position.X; }
        }

        public int Y
        {
            get { return Position.Y; }
        }

        #endregion
    }
}
